//接口---一种规范
export {}; //使用模块,确保跟其它示例没有成员冲突
//约定一个对象当中有哪些成员,并且有那些类型
interface Post {
  title: string;
  content: string;
}
function printPost(post: Post) {
  console.log(post.title);
  console.log(post.content);
}
printPost({
  title: "Hello TypeScript",
  content: "A javascript superset",
});

// ?问号添加可选成员,readonly添加只读成员
interface Post1 {
  title: string;
  content: string;
  subtitle?: string; //接口---可选成员
  readonly summary: string; //接口---可读成员(添加完成后就不能在修改)
}

const hello: Post1 = {
  title: "Hello TypeScript",
  content: "A javascript superset",
  summary: "A javascfript",
};

// hello.summary='aaa'  //因为summary为可读成员,一但赋值就不能在修改

//动态成员
interface Cache {
  // 第一个string为key的类型,第二个string为value的类型
  [key: string]: string;
}
const cache: Cache = {};
cache.foo = "value1";
cache.bar = "value2";
